// import axios from 'axios'
import uni_request from './uni_request.js'
let baseURL = "http://192.168.31.140:8081"
// #ifdef   H5
baseURL = "/api"
// #endif
// str.replace("/api",baseURL);　
class NetWorkTool {
	constructor() { 
		uni.addInterceptor('request', {
			invoke(args) {
				// request 触发前拼接 url 
				const token = uni.getStorageSync("AuthToken")
				const headerName = uni.getStorageSync("tokenType")
				if (token.length>0) {
					args.header[`${headerName}`] = token // 修改请求头
				}
			},
			fail(err) {
				uni.showToast({
					title:"网络错误",
					icon: "none",
					duration:2000
				})
			},
			complete:res=>{
			},
			success(response) { 
				let res = response.data
				let code = res.code;
				let data = res.data;
				let message =  res.message
				if (code === 200) {
					message =  response.data.message
					return Promise.resolve(data);
				} else if (code === 403 || code === 401) { //过期
				
				console.log("code === 403 || code === 401",response)
					uni.redirectTo({
						url: "/pages/login/login",
						success() {
							uni.showToast({
								title: message,
								duration: 1500,
								icon: "none",
								complete: function(res) {
									uni.clearStorage();
								}
							})
						}
					}); 
					return 
				} else if (code === 500) {
					uni.showToast({
						title: message,
						duration: 1500,
						icon: "none"
					});
				console.log("code === 500")
					return Promise.reject(data);
				}else if(code === 400){
					uni.showToast({
						title: data,
						duration: 1500,
						icon: "none"
					});
					return Promise.reject(data);
				} else {
					uni.showToast({
						title: data,
						duration: 1500,
						icon: "none",
						complete() {
							uni.clearStorage();
							uni.redirectTo({
								url: "/pages/login/login"
							})
						}
					});
					console.log(111,message)
				console.log("Promise.reject(data.dat")
					return Promise.reject(data);
				}
			}
		})
		
		
			// uni.addInterceptor('response', {
			// 	invoke(args) {
			// 		console.log("response",args)
					// request 触发前拼接 url 
				// 	let token;
				// 	let headerName;
				// 	uni.getStorage({
				// 		key: 'AuthToken',
				// 		success: function(res) {
				// 			token = res.data;
				// 		}
				// 	});
				// 	uni.getStorage({
				// 		key: 'tokenType',
				// 		success: function(res) {
				// 			headerName = res.data;
				// 		}
				// 	});
				// 	if (token !== null && token !== undefined) {
				// 		args.header[`${headerName}`] = token // 修改请求头
				// 		args.header["Content-Type"] = "application/json";
				// 	}
				// },
				// success(args) {},
				// fail(err) {},
				// complete(response) { 
				// 	console.log( this)
				// 	let res = response.data
				// 	console.log(res)
				// 	let code = res.code;
				// 	let data = res.data;
				// 	let message =  res.message
					
				// 		console.log(code)
				// 	if (code === 200) {
				// 	console.log("code === 403 || code === 401")
				// 		message =  response.data.message
				// 		// router.push({name:"login"})
				// 		console.log("data",data)
				// 		return Promise.reject(data.data);
				// 	} else if (code === 403 || code === 401) { //过期
					
				// 	console.log("code === 403 || code === 401")
				// 		uni.redirectTo({
				// 			url: "/pages/login/login",
				// 			success() {
				// 				uni.showToast({
				// 					title: message,
				// 					duration: 1500,
				// 					icon: "none",
				// 					complete: function(res) {
				// 						uni.clearStorage();
				// 					}
				// 				})
				// 			}
				// 		});
				// 		return data.data;
				// 	} else if (code === 500) {
				// 		uni.showToast({
				// 			title: message,
				// 			duration: 1500,
				// 			icon: "none"
				// 		});
				// 	console.log("code === 500")
				// 		return Promise.reject(data.data);
				// 	} else {
				// 		uni.showToast({
				// 			title: message,
				// 			duration: 1500,
				// 			icon: "none",
				// 			complete() {
				// 				uni.clearStorage();
				// 				uni.redirectTo({
				// 					url: "/pages/login/login"
				// 				})
				// 			}
				// 		});
				// 	console.log("Promise.reject(data.dat")
				// 		return Promise.reject(data.data);
				// 	}
			// 	}
			// })
		
		
	}
	/*tishi为不需要转圈圈的接口添加为false，需要的就不用管*/
	POST(url, param, tishi = false) {
		if (tishi) {
			uni.showLoading({
				title: '加载中',
				icon: "loading"
			});
		}
		return new Promise((resolve, reject) => {
			uni.request({
				url: url.replace("/api", baseURL),
				data: param,
				method: 'POST',
				header: {
					"Content-Type": "application/json"
				},
				success: (res) => {
					uni.hideLoading();
					resolve(res)
				},
				fail: res => {
					uni.hideLoading();
					reject(res)
				},
			})
		});
	}

	/*tishi为不需要转圈圈的接口添加为false，需要的就不用管*/
	POSTMAP(url, param, tishi = false) {
		if (tishi) {
			uni.showLoading({
				title: '加载中',
				icon: "loading"
			});
		}
		return new Promise((resolve, reject) => {
			uni.request({
				url: url.replace("/api", baseURL),
				data: param,
				method: 'POST',
				header: {
					"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
				},
				success: (res) => {
					uni.hideLoading();
					resolve(res)
				},
				fail: res => {
					uni.hideLoading();
					reject(res)
				},
			})
		});
	}

	/*tishi为不需要转圈圈的接口添加为false，需要的就不用管*/
	POSTFORM(url, param, tishi = false) {
		if (tishi) {
			uni.showLoading({
				title: '加载中',
				icon: "loading"
			});
		}
		return new Promise((resolve, reject) => {
			uni.request({
				url: url.replace("/api", baseURL), //仅为示例，并非真实接口地址。
				data:param,
				method: 'POST',
				header:{
					"Content-Type": "application/x-www-form-urlencoded"
				},
				success: (res) => {
					uni.hideLoading();
					resolve(res)
				},
				fail: res => {
					uni.hideLoading();
					reject(res)
				}
			})
		});
	}

	/*tishi为不需要转圈圈的接口添加为false，需要的就不用管*/
	POSTFILES(url, param) {
		return new Promise((resolve, reject) => {

		});
	}

	GET(url, param, tishi = false) {
		if (tishi) {
			uni.showLoading({
				title: '加载中',
				icon: "loading"
			});
		}
		return new Promise((resolve, reject) => {
			uni.request({
				url: url.replace("/api", baseURL), //仅为示例，并非真实接口地址。
				data: param,
				method: 'GET',
				header: {
					"Content-Type": "application/json"
				},
				success: (res) => {
					uni.hideLoading();
					resolve(res)
				},
				fail: res => {
					uni.hideLoading();
					reject(res)
				}
			})
		})
	}

	POSTFILE(url, param, file, number) {
		// uni.showLoading({
		// 	title: '加载中',
		// 	icon: "loading"
		// });
		// var forms = new FormData();
		// var configs = {
		// 	headers: {
		// 		'Content-Type': 'multipart/form-data'
		// 	}
		// };
		// if (param.length != 0) {
		// 	for (var val in param) {
		// 		forms.append(val, param[val]);
		// 	}
		// }
		// if (number == undefined) {
		// 	forms.append('file', file);
		// } else {
		// 	file.forEach(function(file) {
		// 		forms.append('files', file);
		// 	});
		// }
		// return new Promise((resolve, reject) => {
		// 	url: url, //仅为示例，并非真实接口地址。
		// 	data: param,
		// 	method: 'POST'
		// 	header: {
		// 		"Content-Type" = "application/json"
		// 	},
		// 	success: (res) => {
		// 		uni.hideLoading();
		// 		resolve(res.data)
		// 	},
		// 	fail: res => {
		// 		uni.hideLoading();
		// 		reject(res.data)
		// 	}
		// })
	}

}
export default new NetWorkTool();
